


# 第就节课作业

# 1、这两个参数是什么意思：*args，**kwargs？我们为什么要使用它们？
# *args：主要的意思是不定长度的元组
# **kwargs：主要的意思是不定之的字典
# 没有我们不清楚变量的值的长度有多少的时候，可以使用这2个参数，节省资源


# 2、（先自己想，然后再实验，最后查百度）
"""
    下面代码会输出什么？
    def f(x, l = []):
        for i in range(x):
            l.append(i * i)
        print l
    f(2)
    f(3, [3, 2, 1])
    f(3)
"""


def f(x, l=[]):

    for i in range(x):
        l.append(i * i)
    print(l)

f(2)
# 在f函数为2的时候，def这里传参应该是f(2, l=[])，下方进入循环应该会分别是0， 1，所以0*0为0，1*1为1
# 添加进入l的就变成了[0, 1]
f(3, [3, 2, 1])
# 进入上面条用函数后的结果是f(2, l=[0， 1])，而现在又进行了一次调用分别进来重新的赋值f(3, l=[3，2，1])
# 所以下进入循环应该会是分别是0，1，2，所以0*0为0，1*1为1，2*2为4
# 应该l的列表已经存在了[3，2，1]，现在又进行了新增[3，2，1, 0, 1, 4]
f(3)
# [0, 1, 0, 1, 4]  结果不是太明白
f(4)
f(4,[1,2,3,4,5])
f(5)


# 3、如何在一个函数内部修改全局变量
# global 变量

# 4、用lambda函数实现两个数相乘
num = lambda x, y :x * y
print("2个值之乘积%d" % num(10, 20))
# 5、列表推导式求列表所有奇数并构造新列表，a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
intl = [ i for i in a  if i % 2 == 1]
print(intl)





























